package com.cruelbb.wonderful2025.algo.sort;

public class BubbleSort {

    /**
     * 冒泡排序
     * 原理是：从第一个元素开始，与后面的元素进行比较，如果后面的元素大，则交换位置，直到最后一个元素。
     * 外循环 选最大这个动作要执行多少次  从index=0开始走 交换一次 index+1 走完最后倒数第二个元素的时候 其实最大的那个就找出来了
     * 所以外循环应该是 for(i = 0, i < arr.length - 1, i++)
     * 内循环就是 j 和 j+1 比的动作  比一下 如果满足就交换  然后 j++ 继续比
     * 
     */
    public static void bubbleSort(int[] arr) {
        for (int i = arr.length - 1; i > 0; i--) {
            boolean flag = false;
            for (int j = 0; j < i; j++) {
                if (arr[j] > arr[j + 1]) {
                    int swap = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = swap;
                    flag = true;
                }
            }
            if (!flag) {
                break;
            }
        }
    }
}
